<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. 
-->
<html>
<head>
    <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css">
    <style type="text/css">
        .dp-highlighter {
            width:95% !important;
        }
    </style>
    <style type="text/css">
        .footer {
            background-image:      url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
            background-repeat:     repeat-x;
            background-position:   left top;
            padding-top:           4px;
            color:                 #666;
        }
    </style>
    <script type="text/javascript" language="javascript">
        var hide = null;
        var show = null;
        var children = null;

        function init() {
            /* Search form initialization */
            var form = document.forms['search'];
            if (form != null) {
                form.elements['domains'].value = location.hostname;
                form.elements['sitesearch'].value = location.hostname;
            }

            /* Children initialization */
            hide = document.getElementById('hide');
            show = document.getElementById('show');
            children = document.all != null ?
                    document.all['children'] :
                    document.getElementById('children');
            if (children != null) {
                children.style.display = 'none';
                show.style.display = 'inline';
                hide.style.display = 'none';
            }
        }

        function showChildren() {
            children.style.display = 'block';
            show.style.display = 'none';
            hide.style.display = 'inline';
        }

        function hideChildren() {
            children.style.display = 'none';
            show.style.display = 'inline';
            hide.style.display = 'none';
        }
    </script>
    <title>Release Plan 2.0.0</title>
</head>
<body onload="init()">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tr class="topBar">
        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a href="migration-guide.html">Migration Guide</a>&nbsp;&gt;&nbsp;<a href="release-plan-200.html">Release Plan 2.0.0</a>
        </td>
        <td align="right" valign="middle" nowrap>
            <form name="search" action="https://www.google.com/search" method="get">
                <input type="hidden" name="ie" value="UTF-8" />
                <input type="hidden" name="oe" value="UTF-8" />
                <input type="hidden" name="domains" value="" />
                <input type="hidden" name="sitesearch" value="" />
                <input type="text" name="q" maxlength="255" value="" />
                <input type="submit" name="btnG" value="Google Search" />
            </form>
        </td>
    </tr>
</table>

<div id="PageContent">
    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
        <!-- We'll enable this once we figure out how to access (and save) the logo resource -->
        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"-->
        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div>
        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Release Plan 2.0.0</div>

        <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;">
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=19602">
                <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=19602">Edit Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">
                <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a>
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=19602">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=19602">Add Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=19602">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add News"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=19602">Add News</a>
        </div>
    </div>

    <div class="pagecontent">
        <div class="wiki-content">
            <div id="ConfluenceContent"><ul><li>Struts 2.0.0 is preparing a "early adopter" build.</li><li>Codebase seems feature-complete.</li><li>Documentation issues remain.</li><li>Example issues remain.</li><li>Assembly/distribution issues remain.</li></ul>


<p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> For resolved issues, see <a shape="rect" class="external-link" href="https://issues.apache.org/struts/secure/IssueNavigator.jspa?mode=hide&amp;requestId=10680">Struts 2.0.0 DONE</a> in the issue tracker. </p>

<p><img class="emoticon emoticon-light-on" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb_on.png" data-emoticon-name="light-on" alt="(lightbulb)"> For pending issues (if any) see <a shape="rect" class="external-link" href="https://issues.apache.org/struts/secure/IssueNavigator.jspa?mode=hide&amp;requestId=10681">Struts 2.0.0 TODO</a> in the issue tracker. </p>

<p><img class="emoticon emoticon-warning" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/warning.png" data-emoticon-name="warning" alt="(warning)"> For known issues, see <a shape="rect" class="external-link" href="https://issues.apache.org/struts/secure/IssueNavigator.jspa?mode=hide&amp;requestId=10682">Struts 2.0.1 TODO</a></p>

<h2 id="ReleasePlan2.0.0-OverallStatus">Overall Status</h2>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Initial rename of packages and configuration files </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Pass Web``Work2 codebase through the Incubator </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://issues.apache.org/struts/browse/SITE-3">Setup Nightly Builds</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Pending </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-light-on" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb_on.png" data-emoticon-name="light-on" alt="(lightbulb)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Update WW2 documentation for Struts 2</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Utilize Cookbook format for Showcase and add Struts-Examples use cases</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p>&#160;</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-light-off" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb.png" data-emoticon-name="light-off" alt="(grey lightbulb)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Remove deprecated members (IoC components)</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Deprecate selected legacy API members (e.g. Around``Interceptor, "do" clause)</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Update Javadoc to match new package and configuration naming</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Implement selected new features and Struts 1 features (infra) </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Add Struts 1 and WW2 Migration Guides</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Initial draft added </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-light-on" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb_on.png" data-emoticon-name="light-on" alt="(lightbulb)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Develop routine for exporting wiki to HTML/PDF</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="unresolved" href="#">Develop Maven assembly to create distribution</a> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Second documentation review </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Complete standard release plan </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <em>Struts 2.0.0 is intended as a "development" distribution only</em> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr></tbody></table></div>


<h2 id="ReleasePlan2.0.0-DocumentationStatus">Documentation Status</h2>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Step 1 - Setup new Confluence instance </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Step 2 - Initial pass to update nomenclature and remove obsolete material </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Step 3 - Update "snippets" to reference ASF repository </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Step 4 - Complete tutorials and other "TODO" sections </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> Complete </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> </p></th></tr></tbody></table></div>


<h2 id="ReleasePlan2.0.0-AdditionalBackground">Additional Background</h2>

<ul><li><a shape="rect" class="external-link" href="http://issues.apache.org/struts/browse/WW-1349">Struts 2.0.0 omnibus ticket</a></li><li><a shape="rect" class="external-link" href="http://issues.apache.org/struts/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;sorter/order=DESC&amp;sorter/field=priority&amp;resolution=-1&amp;pid=10030&amp;fixfor=21510">Issue Tracker</a></li><li><a shape="rect" class="external-link" href="http://wiki.apache.org/struts/StrutsTi">Struts Ti Proposal</a></li><li><a shape="rect" class="external-link" href="http://wiki.apache.org/struts/StrutsAction2">Migration Issues</a></li><li><a shape="rect" class="external-link" href="http://wiki.apache.org/struts/RoughSpots">Struts 2 Rough Spots</a></li><li><a shape="rect" class="external-link" href="http://svn.apache.org/viewcvs.cgi/struts/action2/trunk/action-api">Public API Whiteboard</a></li><li><a shape="rect" class="external-link" href="http://retroweaver.sourceforge.net/documentation.html" rel="nofollow">Retroweaver</a></li></ul>


<h2 id="ReleasePlan2.0.0-ReleaseManager">Release Manager</h2>

<p>The release manager is <strong>Ted Husted</strong>.</p>
<ul><li>See also <a shape="rect" href="creating-and-signing-a-distribution.html">Creating and Signing a Distribution</a></li></ul>



<h2 id="ReleasePlan2.0.0-SpecialIssues">Special Issues</h2>

<p>Struts 2.0 is based on the WebWork 2 codebase. Essentially, Struts 2.0 will be the technical equivalent of WebWork 2.3. (The WebWork 2 codebase was accepted into the Struts project through the <a shape="rect" class="external-link" href="http://incubator.apache.org/projects/webwork2.html">Apache Incubator</a>.) </p>

<p>For Struts 2.0, the core goals are to repackage the codebase as an Apache Struts product and to provide migration resources for Struts 1 and WW 2 developers. A few legacy API elements will be removed, and a few new features will be added. </p>

<p>The Struts 2.0 release is following the <a shape="rect" class="external-link" href="http://wiki.apache.org/struts/StrutsTi">Struts Ti Proposal</a>. Struts 2.0 is Phase 1 of the proposal. A subsequent Struts release series (either Struts 2.1 or Struts 3.0) will address Phase 2 of the proposal.</p>

<p>Struts 2.0.0 is targeting August 2006 as a relaxed distribution date.</p>

<p>The platform for Struts 2.0.x is Java 1.5, with Java 1.4 compatibity provided by <a shape="rect" class="external-link" href="http://retrotranslator.sourceforge.net/" rel="nofollow">RetoTranslator</a>.</p>

<p>See also <a shape="rect" class="external-link" href="http://wiki.apache.org/struts/StrutsAction2">Struts 2</a>.</p>

<h2 id="ReleasePlan2.0.0-NewFeaturesUnderConsideration">New Features Under Consideration</h2>

<p>This initial list of new features is taken from the <a shape="rect" class="external-link" href="http://wiki.apache.org/struts/RoughSpots">Struts 2 Rough Spots</a> page.</p>

<h3 id="ReleasePlan2.0.0-ReviewandRefinement">Review and Refinement</h3>

<ul><li>Separate classes that most applications need to use. Isolate classes that the framework uses internally or that are rarely used by applications.  (See Rough Spot #3.)</li><li>Distinguish between the published public versus private APIs. (See Rough Spot #4.)</li><li>Utilize properties (methods) instead of protected or public fields (). (See #13.)</li><li>Review exception handling. Some are still being swallowed rather than rethrown. (See #20 and <a shape="rect" class="unresolved" href="#">WW-652@ww</a>)</li></ul>


<h3 id="ReleasePlan2.0.0-Modifications">Modifications</h3>

<ul><li>Simplify TextProvider. (See #15.)</li><li>Modify ParametersInterceptor to sort parameter names by depth (using bucket sort) and then map them in that order (shallowest first). (See #21.)</li><li>Use the strategy pattern to swap in different implementations of interfaces like ValidationAware. (See Tim, NTH #1.)</li></ul>


<h3 id="ReleasePlan2.0.0-DeprecationsandRemovals"><a shape="rect" class="unresolved" href="#">Deprecations and Removals</a></h3>

<ul><li>Deprecate or remove the AroundInterceptor. (See #7.)</li><li>Eliminate "do" clause for Action alias lookups. Scan Actions at load time for known aliases, and fail fast.</li><li>Eliminate "default" alias (which relied on "doAlais").</li></ul>


<h3 id="ReleasePlan2.0.0-Architecture">Architecture</h3>

<ul><li>Address the confusing issue of the validation/workflow lifecycle and different methods. (See Patrick #4.)</li></ul>


<h3 id="ReleasePlan2.0.0-Configuration">Configuration</h3>

<ul><li>Add support for type aliasing (a la Spring and iBATIS) to reduce or eliminate need to use fully-qualified class names, over and over. The fully-qualified type is declared once, and then a simple type "nickname" can be used instead. (See #23.)</li><li>Combine configuration DTDs so that Actions, Messages, and Validators can be defined in a single file. (See Ted, #1.)</li><li>Use values on the stack to override/define configuration options. (See Tim, NTH #3.)</li></ul>


<h3 id="ReleasePlan2.0.0-OGNL">OGNL</h3>

<ul><li>On the OGNL value stack, rename #request for request parameters and #requestAttributes for request attributes. (See #17 and <a shape="rect" class="unresolved" href="#">WW-785@ww</a>.)</li><li>Work with OGNL to add Java 5 support. (See #31.)</li><li>Work with OGNL to make it a clear superset of JSTL. (See Gabe #4.)</li></ul>


<h3 id="ReleasePlan2.0.0-Struts1FeaturestoImplement"><a shape="rect" class="unresolved" href="#">Struts 1 Features to Implement</a> </h3>

<ul><li>Wildcard Action Mappings (Done in XWork 2)</li><li><span style="text-decoration: line-through;">DynaForm as Model Object (including <a shape="rect" class="external-link" href="http://forums.opensymphony.com/thread.jspa?messageID=67350&amp;#67350" rel="nofollow">LazyDynaForms</a>)</span></li><li>Extends for action mappings (See Tim, NTH #2.)</li><li>Change the default submit method for the form tag from GET to POST (See Ted, #2.)</li><li><a shape="rect" class="unresolved" href="#">Set field focus</a></li></ul>


<h2 id="ReleasePlan2.0.0-OutstandingIssueReview">Outstanding Issue Review</h2>

<p><a shape="rect" class="external-link" href="http://issues.apache.org/struts/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;sorter/order=DESC&amp;sorter/field=priority&amp;resolution=-1&amp;pid=10030&amp;fixfor=21510">Struts 2.0.0 Issues</a></p>

<h2 id="ReleasePlan2.0.0-TestingChecklist">Testing Checklist</h2>

<h3 id="ReleasePlan2.0.0-TestingSummary">Testing Summary </h3>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> # </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Completed </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 1. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Run Unit Test targets </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 2. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Play test bundled applications </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> ${STATUS} </p></td></tr></tbody></table></div>


<p>TODO: A Silenium test suite for the applications would be great!</p>

<h2 id="ReleasePlan2.0.0-TestBuildDistributionChecklist(A)">Test Build Distribution Checklist (A)</h2>

<p>See also <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=Creating+and+Signing+Releases&amp;linkCreation=true&amp;fromPageId=19602">Creating and Signing Releases</a></p>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> # </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Completed </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A1. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Setup new JIRA version level or update release on Roadmap </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A2. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Tag release in svn: ${STRUTS_2_0_0} </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done (r447072) </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A3. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Update POM version level and run Distribution Target </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A4. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Create Sums and Sign Distributions </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A5. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Upload Distribution to <code>people.apache.org/builds/struts/2.0.0/</code> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A6. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Deploy JAR to Apache Java-Repository </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>$ mvn deploy -P pre-assembly</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A7. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Post release-quality vote on dev@ lists </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr></tbody></table></div>


<h3 id="ReleasePlan2.0.0-Vote(A)">Vote (A)</h3>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> ${PMC_MEMBER} </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> ${GRADE} </p></td></tr></tbody></table></div>


<ul><li>If release vote fails, including for a lack of quorum (3 binding +1s), remove from builds folder.</li><li>If a release vote passes (Alpha, Beta or GA), the release may be announced and mirrored, at the PMC's discretion.</li><li>If vote is GA, goto Checklist (C).</li></ul>


<h2 id="ReleasePlan2.0.0-PointReleaseDistributionChecklist(B)">Point Release Distribution Checklist (B)</h2>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> B1. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Update "Downooads" page on website and Test Downloads </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr></tbody></table></div>


<h3 id="ReleasePlan2.0.0-Vote(B)">Vote (B)</h3>

<p>If initial vote is Alpha or Beta, voting can continue until a GA or "withdraw" vote passes, or there is a subsequent release.</p>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> ${PMC_MEMBER} </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> ${GRADE} </p></td></tr></tbody></table></div>


<h2 id="ReleasePlan2.0.0-GeneralAvailabilityDistributionChecklist(C)">General Availability Distribution Checklist (C) </h2>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><ol></ol>
</th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Completed </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> C1. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Copy Distribution to Mirrored Directories </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> C2. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> After 24 hours, update "Downloads" page on website </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> C3. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Post an announcement to lists and website </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr></tbody></table></div></div>
        </div>

        
    </div>
</div>
<div class="footer">
    Generated by CXF SiteExporter
</div>
</body>
</html>
